Delayed allocation has been a feature of computer file systems for several years. With delayed allocation, pending disk writes are held in memory and disk space to be allocated for the additional writes is subtracted from a free-space counter. Disk writes may be cached in memory until memory must be freed for other purposes or until the operating system or an application determines it is necessary to flush the cache to disk. Delayed allocation may increase the performance of a file system by replacing slow disk write operations with relatively fast writes to cache. Disk writes may be delayed until periods of low system utilization, and consolidating several cache writes into one large disk write may enable the storage device to optimize file storage for later retrieval.
The advantages of delayed allocation when used with direct attached storage, however, have not been fully realized with cluster storage systems. With cluster storage, several computing devices may share several storage devices. The storage cluster may appear to be a single file system to applications, but the storage system may transparently manage delegation of storage to computing devices, and caching, allocating, and writing data to storage devices. The complexity of managing cluster storage relative to the time needed to write data to storage devices may reduce the performance gains of delayed allocation in cluster storage systems. For example, a cluster storage system that implements delayed allocation by reserving delayed allocation blocks in delegated storage maps may realize little performance gain from the use of delayed allocation. The instant disclosure, therefore, identifies and addresses a need for systems and methods for delayed allocation in cluster storage.